# -*- coding: utf-8 -*-
from django.db import models

# Create your models here.
class Instituicao(models.Model):
    INSTITUICAO_CHOICES = (
        (u'Instituto Politécnico de Beja', u'Instituto Politécnico de Beja'),
        (u'Universidade do Algarve', u'Universidade do Algarve'),
        )
    designacao = models.CharField(max_length=100, 
                                  choices=INSTITUICAO_CHOICES)
    abreviatura = models.CharField(max_length = 10)
    def __unicode__(self):
        return self.designacao
    pass


class Escola(models.Model):
    designacao = models.CharField(max_length=100)
    abreviatura = models.CharField(max_length = 10)
    instituicao = models.ForeignKey(Instituicao)
    def __unicode__(self):
        return self.designacao
    pass


class Curso(models.Model):
    designacao = models.CharField(max_length = 100)
    abreviatura = models.CharField(max_length = 10)
    
    def __unicode__(self):
        return self.designacao
    pass

class Departamento(models.Model):
    DEPARTAMENTO_CHOICES = (
        (u'Engenharia', u'Engenharia'),
        (u'Matemática e Ciências Físicas', u'Matemática e Ciências Físicas'),
        (u'Saúde', u'Saúde'),
        (u'Tecnologias e Ciências Aplicadas', 
         u'Tecnologias e Ciências Aplicadas'),
        (u'Artes, Humanidades e Desporto', u'Artes, Humanidades e Desporto'),
        (u'Educação e Ciências Sociais e do Comportamento',
         u'Educação e Ciências Sociais e do Comportamento'),
        (u'Ciências Empresariais', u'Ciências Empresariais'),
        (u'Biociências', u'Biociências'),
        )
    designacao = models.CharField(max_length = 80, 
                                  choices = DEPARTAMENTO_CHOICES)
    abreviatura = models.CharField(max_length = 10)
    
    def __unicode__(self):
        return self.designacao
    pass

class UnidadeCurricular(models.Model):
    SEMESTRE_LECTIVO_CHOICES = (
        ( 1, 1),
        ( 2, 2),
        ( 3, 3),
        ( 4, 4),
        ( 5, 5),
        ( 6, 6),
        ( 7, 7),
        ( 8, 8),
        ( 9, 9),
        ( 10, 10),
        )

    designacao = models.CharField(max_length = 100)
    abreviatura = models.CharField(max_length = 10)
    escola = models.ForeignKey(Escola)
    curso = models.ForeignKey(Curso)
    departamento = models.ForeignKey(Departamento)
    
    semestre = models.IntegerField(choices = SEMESTRE_LECTIVO_CHOICES)
    
    def __unicode__(self):
         return self.designacao
    pass

class TipoAula(models.Model):
    tipo = models.CharField(max_length = 20)
    
    def __unicode__(self):
        return self.tipo
    pass

class CargaUnidade(models.Model):
    unidade_curricular = models.ForeignKey(UnidadeCurricular)
    tipo_aula = models.ForeignKey(TipoAula)
    horas = models.IntegerField()
    
    def __unicode__(self):
        return unicode(self.unidade_curricular) +\
            u', ' + unicode(self.tipo_aula) +\
            u': ' + unicode(self.horas) + u'h'
    pass

class Turma(models.Model):
    ANO_LECTIVO_CHOICES = (
        (u'2010-2011',u'2010-2011'),
        (u'2011-2012',u'2011-2012'),
        (u'2012-2013',u'2012-2013'),
        (u'2013-2014',u'2013-2014'),
        )
    ano_lectivo = models.CharField(max_length=15,
                                   choices=ANO_LECTIVO_CHOICES)

    numero_alunos = models.IntegerField()
    carga_horaria_uc = models.ForeignKey(CargaUnidade)

    def __unicode__(self):
        return unicode(self.id) + u': ' + self.ano_lectivo +\
            u', ' + unicode(self.carga_horaria_uc)
    pass

class Categoria(models.Model):
    DESIGNACAO_CHOICES = (
        (u'professor coordenador principal', 
         u'professor coordenador principal'),
        (u'professor coordenador com Agregação', 
         u'professor coordenador com Agregação'),
        (u'professor coordenador', u'professor coordenador'),
        (u'professor adjunto', u'professor adjunto'),
        (u'assistente', u'assistente'),
        (u'assistente do primeiro triénio', u'assistente do primeiro triénio'),
        (u'assistente do segundo triénio', u'assistente do segundo triénio'),
        (u'assistente do segundo triénio com Mestrado', 
         u'assistente do segundo triénio com Mestrado'),
        (u'monitor',  u'monitor'),
        (u'professor-catedrático', u'professor-catedrático'),
        (u'professor associado com Agregação',  
         u'professor associado com Agregação'),
        (u'professor associado', u'professor associado'),
        (u'professor auxiliar com Agregação', 
         u'professor auxiliar com Agregação'),
        (u'professor auxiliar',
        u'professor auxiliar'),
        )
    designacao = models.CharField(max_length = 80, 
                                  choices = DESIGNACAO_CHOICES)
    def __unicode__(self):
        return self.designacao
    pass

class TipoContratacao(models.Model):
    designacao = models.CharField(max_length = 20)
    
    def __unicode__(self):
        return self.designacao
    pass

class Docente(models.Model):
    nome_completo = models.CharField(max_length = 120)
    categoria = models.ForeignKey(Categoria)
    departamento = models.ForeignKey(Departamento)
    escola = models.ForeignKey(Escola)
    tipo_contrato = models.ForeignKey(TipoContratacao)
    percentagem = models.IntegerField()

    def __unicode__(self):
        return self.nome_completo
    pass

class Distribuicao(models.Model):
    docente = models.ForeignKey(Docente)
    turma = models.ForeignKey(Turma)

    def __unicode__(self):
        return unicode(self.docente) + u', ' + unicode(self.turma)
    pass
